home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / asm / kprobes.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  2KB  |  70 lines

  1. #ifndef _ASM_KPROBES_H
  2. #define _ASM_KPROBES_H
  3. /*
  4.  *  Kernel Probes (KProbes)
  5.  *  include/asm-i386/kprobes.h
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20.  *
  21.  * Copyright (C) IBM Corporation, 2002, 2004
  22.  *
  23.  * 2002-Oct    Created by Vamsi Krishna S <vamsi_krishna@in.ibm.com> Kernel
  24.  *        Probes initial implementation ( includes suggestions from
  25.  *        Rusty Russell).
  26.  */
  27. #include <linux/types.h>
  28. #include <linux/ptrace.h>
  29.  
  30. struct pt_regs;
  31.  
  32. typedef u8 kprobe_opcode_t;
  33. #define BREAKPOINT_INSTRUCTION    0xcc
  34. #define MAX_INSN_SIZE 16
  35. #define MAX_STACK_SIZE 64
  36. #define MIN_STACK_SIZE(ADDR) (((MAX_STACK_SIZE) < \
  37.     (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR))) \
  38.     ? (MAX_STACK_SIZE) \
  39.     : (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR)))
  40.  
  41. #define JPROBE_ENTRY(pentry)    (kprobe_opcode_t *)pentry
  42.  
  43. /* Architecture specific copy of original instruction*/
  44. struct arch_specific_insn {
  45.     /* copy of the original instruction */
  46.     kprobe_opcode_t insn[MAX_INSN_SIZE];
  47. };
  48.  
  49.  
  50. /* trap3/1 are intr gates for kprobes.  So, restore the status of IF,
  51.  * if necessary, before executing the original int3/1 (trap) handler.
  52.  */
  53. static inline void restore_interrupts(struct pt_regs *regs)
  54. {
  55.     if (regs->eflags & IF_MASK)
  56.         local_irq_enable();
  57. }
  58.  
  59. #ifdef CONFIG_KPROBES
  60. extern int kprobe_exceptions_notify(struct notifier_block *self,
  61.                     unsigned long val, void *data);
  62. #else                /* !CONFIG_KPROBES */
  63. static inline int kprobe_exceptions_notify(struct notifier_block *self,
  64.                        unsigned long val, void *data)
  65. {
  66.     return 0;
  67. }
  68. #endif
  69. #endif                /* _ASM_KPROBES_H */
  70.